package com.eastfair.common.entity;

import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.afterturn.easypoi.excel.annotation.ExcelEntity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.eastfair.core.base.entity.Entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.Map;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;
import static com.eastfair.core.utils.DateUtils.DEFAULT_DATE_TIME_FORMAT;
import com.eastfair.annotation.model.EchoVO;

import static com.baomidou.mybatisplus.annotation.SqlCondition.LIKE;

/**
 * <p>
 * 实体类
 * 系统附件表
 * </p>
 *
 * @author ligang
 * @since 2022-08-11
 */
@Data
@NoArgsConstructor
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("common_attachment_file")
@ApiModel(value = "AttachmentFile", description = "系统附件表")
@AllArgsConstructor
public class AttachmentFile extends Entity<Long> implements EchoVO {

    private static final long serialVersionUID = 1L;
    @TableField(exist = false)
    private Map<String, Object> echoMap = new HashMap<>();
    /**
     * 是否启用：1是；0否
     */
    @ApiModelProperty(value = "是否启用：1是；0否")
    @TableField(value = "is_enabled")
    @Excel(name = "是否启用：1是；0否")
    private Integer isEnabled;

    /**
     * 是否删除：1是；0否
     */
    @ApiModelProperty(value = "是否删除：1是；0否")
    @TableField(value = "is_deleted")
    @Excel(name = "是否删除：1是；0否")
    private Integer isDeleted;

    /**
     * 项目id
     */
    @ApiModelProperty(value = "项目id")
    @TableField(value = "project_id")
    @Excel(name = "项目id")
    private Long projectId;

    /**
     * 子系统id
     */
    @ApiModelProperty(value = "子系统id")
    @TableField(value = "subsystem_id")
    @Excel(name = "子系统id")
    private Long subsystemId;

    /**
     * 租户id
     */
    @ApiModelProperty(value = "租户id")
    @TableField(value = "tenant_id")
    @Excel(name = "租户id")
    private Long tenantId;

    /**
     * 系统code
     */
    @ApiModelProperty(value = "系统code")
    @Size(max = 20, message = "系统code长度不能超过20")
    @TableField(value = "system_code", condition = LIKE)
    @Excel(name = "系统code")
    private String systemCode;

    /**
     * 客户id，线索id，联系人id，场地id
     */
    @ApiModelProperty(value = "客户id，线索id，联系人id，场地id")
    @TableField(value = "business_id")
    @Excel(name = "客户id，线索id，联系人id，场地id")
    private Long businessId;

    /**
     * 模块名(枚举维护)
     */
    @ApiModelProperty(value = "模块名(枚举维护)")
    @Size(max = 255, message = "模块名(枚举维护)长度不能超过255")
    @TableField(value = "business_type", condition = LIKE)
    @Excel(name = "模块名(枚举维护)")
    private String businessType;

    /**
     * 附件名称
     */
    @ApiModelProperty(value = "附件名称")
    @Size(max = 255, message = "附件名称长度不能超过255")
    @TableField(value = "attachment_name", condition = LIKE)
    @Excel(name = "附件名称")
    private String attachmentName;

    /**
     * 附件格式
     */
    @ApiModelProperty(value = "附件格式")
    @Size(max = 10, message = "附件格式长度不能超过10")
    @TableField(value = "attachment_subfix", condition = LIKE)
    @Excel(name = "附件格式")
    private String attachmentSubfix;

    /**
     * 附件大小(单位kb)
     */
    @ApiModelProperty(value = "附件大小(单位kb)")
    @Size(max = 20, message = "附件大小(单位kb)长度不能超过20")
    @TableField(value = "attachment_size", condition = LIKE)
    @Excel(name = "附件大小(单位kb)")
    private Long attachmentSize;

    /**
     * 附件地址
     */
    @ApiModelProperty(value = "附件地址")
    @Size(max = 255, message = "附件地址长度不能超过255")
    @TableField(value = "attachment_url", condition = LIKE)
    @Excel(name = "附件地址")
    private String attachmentUrl;

    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    @Size(max = 255, message = "备注长度不能超过255")
    @TableField(value = "remark", condition = LIKE)
    @Excel(name = "备注")
    private String remark;

    /**
     * 团队ID
     */
    @ApiModelProperty(value = "团队ID")
    @TableField(value = "team_id")
    @Excel(name = "团队ID")
    private Long teamId;


    @Builder
    public AttachmentFile(Long id, Long createdBy, LocalDateTime createTime, Long updatedBy, LocalDateTime updateTime, 
                    Integer isEnabled, Integer isDeleted, Long projectId, Long subsystemId, Long tenantId, 
                    String systemCode, Long businessId, String businessType, String attachmentName, String attachmentSubfix, Long attachmentSize,
                    String attachmentUrl, String remark, Long teamId) {
        this.id = id;
        this.createdBy = createdBy;
        this.createTime = createTime;
        this.updatedBy = updatedBy;
        this.updateTime = updateTime;
        this.isEnabled = isEnabled;
        this.isDeleted = isDeleted;
        this.projectId = projectId;
        this.subsystemId = subsystemId;
        this.tenantId = tenantId;
        this.systemCode = systemCode;
        this.businessId = businessId;
        this.businessType = businessType;
        this.attachmentName = attachmentName;
        this.attachmentSubfix = attachmentSubfix;
        this.attachmentSize = attachmentSize;
        this.attachmentUrl = attachmentUrl;
        this.remark = remark;
        this.teamId = teamId;
    }

}
